package com.ynet.middleground.contract.bean;

import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

import com.ynet.core.common.BaseReqObjPager;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @author daigaole
 * @description 合约查询请求
 * @date 2020-03-18
 */
@Data
@ApiModel(value = "合约查询请求", description = "合约查询请求")
public class QueryContractReq extends BaseReqObjPager {

    private static final long serialVersionUID = 6933795969369541901L;

    @ApiModelProperty(value = "业态公司 id \n（仅综合管理平台使用）", notes = "业态公司 id \n（仅综合管理平台使用）", dataType = "Integer")
    private Integer formatId;

    /**
     * 合约id
     */
    @ApiModelProperty(value = "合约id，如果合约id作为查询条件，使用精准查询，其他查询条件忽略", notes = "合约id", dataType = "Integer")
    private Integer contractId;

    /**
     * 上级合约 id
     */
    @ApiModelProperty(value = "上级合约 id", notes = "上级合约 id", dataType = "Integer")
    private Integer parentId;
    /**
     * 业务id
     */
    @ApiModelProperty(value = "业务id", notes = "业务id", dataType = "String")
    private String busId;

    /**
     * 模板 id
     */
    @ApiModelProperty(value = "模板 id", notes = "模板 id", dataType = "Integer")
    private Integer templateId;

    /**
     * 合约类型code：渠道创建模版时维护
     */
    @ApiModelProperty(value = "合约类型：渠道创建模版时维护", notes = "合约类型：渠道创建模版时维护", dataType = "String")
    private String contractType;

    /**
     * 客户经理
     */
    @ApiModelProperty(value = "客户经理", notes = "客户经理", dataType = "Integer")
    private Integer customerManager;

    /**
     * 业务流水号
     */
    @ApiModelProperty(value = "业务流水号", notes = "业务流水号", dataType = "String")
    private String serialNumber;

    /**
     * 审批流程编号
     */
    @ApiModelProperty(value = "审批流程编号", notes = "审批流程编号", dataType = "String")
    private String appProcessNo;

    /**
     * 签署时间起
     */
    @ApiModelProperty(value = "签署时间起（年月日八位数字，例如：操作时间 格式为：yyyy-MM-dd），查询本日期之后的增量数据（包含当日）",
        notes = "签署时间起（年月日八位数字，例如：操作时间 格式为：yyyy-MM-dd），查询本日期之后的增量数据（包含当日）", dataType = "String")
    private String tsignatoryDateStart;

    /**
     * 签署时间止
     */
    @ApiModelProperty(value = "签署时间止（年月日八位数字，例如：操作时间 格式为：yyyy-MM-dd），查询本日期之后的增量数据（包含当日）",
        notes = "签署时间止（年月日八位数字，例如：操作时间 格式为：yyyy-MM-dd），查询本日期之后的增量数据（包含当日）", dataType = "String")
    private String tsignatoryDateEnd;

    /**
     * 业务主体ID
     */
    @ApiModelProperty(value = "业务主体ID", notes = "业务主体ID", dataType = "String")
    private String subjectId;

    /**
     * 业务主体名称
     */
    @ApiModelProperty(value = "业务主体名称", notes = "业务主体名称", dataType = "String")
    private String subjectName;

    /**
     * 签署方Id
     */
    @ApiModelProperty(value = "签署方Id", notes = "签署方Id", dataType = "String")
    private String signatoryId;

    /**
     * 签署方名称
     */
    @ApiModelProperty(value = "签署方名称", notes = "签署方名称", dataType = "String")
    private String signatoryName;

    /**
     * 产品类型
     */
    @ApiModelProperty(value = "产品类型", notes = "产品类型", dataType = "String")
    private String productType;

    /**
     * 合约名称
     */
    @ApiModelProperty(value = "合约名称", notes = "合约名称", dataType = "String")
    private String contractName;

    /**
     * 合约编号
     */
    @ApiModelProperty(value = "合约编号", notes = "合约编号", dataType = "String")
    private String contractNo;

    /**
     * 签署方式：0-线上，1-线下
     */
    @Size(max = 1, min = 1, message = "长度为1")
    @Pattern(regexp = "[01]", message = "签署方式：0-线上，1-线下")
    @ApiModelProperty(value = "签署方式：0-线上，1-线下", notes = "签署方式：0-线上，1-线下", dataType = "String")
    private String signedWay;

    /**
     * 合约状态：0-未签署（新建保存状态下）、1-签署中、2-已签署、3-已结束
     */
    @Pattern(regexp = "^[\\x01-\\x7f]*$", message = "不能使用中文字符")
    @Size(min = 1, max = 1, message = "长度为1")
    @ApiModelProperty(value = "合约状态：0-未签署（新建保存状态下）、1-签署中、2-已签署、3-已结束", notes = "合约状态：0-未签署（新建保存状态下）、1-签署中、2-已签署、3-已结束",
        dataType = "String")
    private String status;
}
